{%-macro numItems(schema)-%}
  {%-if schema.minItems is defined-%}
    {%-if schema.maxItems is defined-%}
      {%-if schema.minItems == schema.maxItems -%}
        There must be exactly {{schema.minItems}} elements.
      {%-else-%}
        There must be {{schema.minItems}} to {{schema.maxItems}} elements.
      {%-endif-%}
    {%-else-%}{#no maxitems#}
      There must be at least {{schema.minItems}} elements.
    {%-endif-%}
  {%-elif schema.maxItems is defined-%}
    There must be at most {{schema.maxItems}} elements.
  {%-endif-%}
{%-endmacro-%}
{%-import 'schema.jinja2' as loader-%}
**Array**{%if 'title' in schema%} - {{schema.title|italics}}.{%endif%} {%if not schema.IsTupleSchema() %}{{numItems(schema)}}  Each element is:

{{loader.Display(schema.GetItemSchema().Resolve(resolver), resolver) | replace("\n", "\n> ")}}
{%-else%}  The array must have {{schema.NumberTupleItems()}} elements: {%for item in schema.GetTupleSchema()%}
Element {{loop.index}}:
{{loader.Display(item.Resolve(resolver), resolver) | replace("\n", "\n> ")}}
{%endfor%}{%endif%}
